perm filename QANGLE.FAI[XGP,BGB] blob sn#027253 filedate 1973-05-11 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00002 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002	NSUBR(QANGLE,VECT1,VECT2)-----------------------------------------
 00004 ENDMK
⊗;
NSUBR(QANGLE,VECT1,VECT2)-----------------------------------------
	ACCUMULATES{DX,DY,T1,T2,T3}
	HRRZ T1,VECT1↔HRRZ T2,VECT2		;GET INTO ACS
	COL DX,T2↔ROW T3,T1↔SUB DX,T3		;DIFFERENCE CO-ORDINATES
	ROW DY,T2↔ROW T3,T1↔SUB DY,T3
	MOVM T1,DX↔MOVM T2,DY↔SETZM SWPFLG#	;GET ABS OF DIFFERENCES
	CAMG T1,T2↔SETOM SWPFLG			;REMEMBER IF DY>DX
	CAMG T1,T2↔EXCH T1,T2			;AND SWAP IF DY>DX
	HRLZ T2,T2↔IDIV T2,T1↔ASHC T2,=12	;ENTIER(DY/(DX*64))→T2, FACTION
	HLRE T1,ATNTAB(T2)			;GET APPROXIMATE ANGLE FROM TABLE
	HRLE T2,ATNTAB(T2)			;GET INTERPOLATION CONSTANT
	IMUL T2,T3↔ADD T1,T3			;MULTIPLY BY REMAINDER
	HRREI T2,200000				;IF SWAPPED,
	SKIPE SWPFLG↔SUBM T2,T1			;REFLECT ANGLE ABOUT DIAGONAL
	SKIPGE DY↔ADDI T1,600000		;GET INTO PROPER QUADRANT
	SKIPGE DX↔TRC T1,200000
	HRRE 1,T2↔POP2J

ATNTAB:	BLOCK 101

	INITCODE
	EXTERNAL ATAN
	MOVSI (<POPJ P,>)
	MOVEM .
ATNGET:	SETZM I#
	MOVEI ATNTAB-1
	MOVEM J#
	SETOM LASTAN#
ATNGE2:	JSA 16,ATAN
	JUMP I
	FMPR 0,[41721.5135]
	MOVE 1,0
	FSBR 0,LASTAN
	FIX 0,234000			;(?)
	SKIPL LASTAN
	HRRM 0,@J
	MOVEM 1,LASTAN
	FIX 1,233000
	AOS J
	HRLM 1,@J
	MOVE 0,[0.015625]
	FADB 0,I
	CAMG 0,[1.00]
	GO ATNGE2
	POP0J
SUBREND